package com.mf.entity.dto.basic.webPage;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.time.LocalDateTime;

import com.mf.handlers.ListTypeHandler;
import com.mf.utils.tree.AbstractTreeNode;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;
import java.util.List;

/**
 * 权限表
 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_web_menu")
public class DtoWebMenu extends AbstractTreeNode<DtoWebMenu, Integer> implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;

    /**
     *
     */
    @TableId
    private Integer id;

    /**
     * 1启用，0禁用
     */

    private Integer status;
    /**
     * 排序
     */

    private Integer sort;
    /**
     * 父级id
     */

    private Integer pid;
    /**
     * 路由菜单访问路径
     */

    private String path;
    /**
     * 路由 name (对应页面组件 name, 可用作 KeepAlive 缓存标识 && 按钮权限筛选)
     */

    private String pathName;
    /**
     * 视图文件路径
     */

    private String componentPath;
    /**
     * 路由重定向地址
     */

    private String redirect;
    /**
     * 权限码List<String>
     */

    @TableField(typeHandler = ListTypeHandler.class)
    private List<String> metaRole;
    /**
     * 菜单和面包屑对应的图标
     */

    private String metaIcon;
    /**
     * 路由标题 (用作 document.title || 菜单的名称)
     */

    private String metaTitle;
    /**
     * 当前路由为详情页时，需要高亮的菜单
     */

    private String metaActiveMenu;
    /**
     * 路由外链时填写的访问地址
     */

    private String metaIsLink;
    /**
     * 是否在菜单中隐藏 (通常列表详情页需要隐藏)
     */

    private Integer metaIsHide;
    /**
     * 菜单是否全屏 (示例：数据大屏页面)
     */

    private Integer metaIsFull;
    /**
     * 菜单是否固定在标签页中 (首页通常是固定项)
     */

    private Integer metaIsAffix;
    /**
     * 权限描述
     */

    private String remark;
    /**
     * 当前路由是否缓存
     */

    private Integer metaIsKeepAlive;
    /**
     * 其他标识,通常类似功能使用同一页面是用于区分
     */

    private String metaFlag;
    /**
     *
     */

    private LocalDateTime createdTime;
    /**
     *
     */

    private LocalDateTime updateTime;

}
